<?php

define ('VK_APP_ID', 'vk_app_1882282');               // id приложения ВКонтакте
define ('VK_APP_PASSWORD', 'shjpEEvj1v8RFfwPFLSG');   // ключ приложения

// TODO 1: вытянуть данные пользователя (фио, друзья, дата рождения..)

class Auth_Vkontakte {
    
    /**
    * Проверяет, залогинен пользователь. Если да - возвращает его ID ВКонтакте, в противном случае - false.
    */
    public function is_auth() {
        
      $session = array();
      $member = FALSE;
      $valid_keys = array('expire', 'mid', 'secret', 'sid', 'sig');
      $app_cookie = $_COOKIE[VK_APP_ID];
      if ($app_cookie) {
        $session_data = explode ('&', $app_cookie, 10);
        foreach ($session_data as $pair) {
          list($key, $value) = explode('=', $pair, 2);
          if (empty($key) || empty($value) || !in_array($key, $valid_keys)) {
            continue;
          }
          $session[$key] = $value;
        }
        foreach ($valid_keys as $key) {
          if (!isset($session[$key])) return $member;
        }
        ksort($session);

        $sign = '';
        foreach ($session as $key => $value) {
          if ($key != 'sig') {
            $sign .= ($key.'='.$value);
          }
        }
     //   echo "<hr>$sign<hr>";
        $sign .= VK_APP_PASSWORD;
        $sign = md5($sign);
    //    echo "<hr>$sign<hr>";
        if ($session['sig'] == $sign && $session['expire'] > time()) {
          $member = array(
            'id' => intval($session['mid']),
            'secret' => $session['secret'],
            'sid' => $session['sid']
          );
        }
      }
      return $member['id'];        
        
        
    /*    if (!isset($_COOKIE[VK_APP_ID]))
            return false;
            
        $vk_cookie = $_COOKIE[VK_APP_ID];
        
        if (!empty($vk_cookie)) {
            $cookie_data = array();
            
            foreach (explode('&', $vk_cookie) as $item) {
                $item_data = explode('=', $item);
                $cookie_data[$item_data[0]] = $item_data[1];
            }
            
            // Проверяем sig
            $string = sprintf("expire=%smid=%ssecret=%ssid=%s%s", $cookie_data['expire'], $cookie_data['mid'], $cookie_data['secret'], $cookie_data['sid'], VK_APP_PASSWORD);
            
            if (md5($string) == $cookie_data['sig']) {
                // sig не подделан - возвращаем ID пользователя ВКонтакте.
                return $cookie_data['mid'];
            }
        }
        
        return false;  */      
    }
    
    /**
    * Производит разлогинивание 
    */
    public function logout() {
        
        // Заменяем куку от ВКонтакте на пустую
        if (setcookie(VK_APP_ID, '', 0, "/", '.'.$_SERVER['HTTP_HOST'])) {
            return true;
        }
        
        return false;
    }
}
